package edu.zut.controller;


import edu.zut.pojo.UserInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

//标明当前是一个控制器
@Controller
//@RequestMapping("/user") 路劲窄化   当前控制器下所有的请求默认都以/user开头
@RequestMapping("/user")
public class IndexController {

    /**
     * @RequestMapping :指定当前映射的url
     * path：映射路劲
     * method：url请求格式
     * 返回值：String  表示的是跳转的路劲
     */
//    @RequestMapping(path = "/user/login",method =RequestMethod.GET)
    public String userLogin(HttpServletRequest request){
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username = " + username);
        System.out.println("password = " + password);
        return "/success.html";
    }

    /**
     * 根据方法的形参进行参数的自动绑定
     * 要求：url的参数名和形参名保持一致，同时类型兼容
     */
//    @RequestMapping(path = "/user/login",method =RequestMethod.GET)
    public String userLogin2(String username,String password){
        System.out.println("username = " + username);
        System.out.println("password = " + password);
        return "/success.html";
    }

    /**
     * 当处理请求的方法形参名与url请求参数名不一致，
     * 可以通过注解@RequestParam指定要绑定的请求参数
     */
    @RequestMapping(path = "/login",method =RequestMethod.POST)
    public String userLogin3(@RequestParam(name = "name") String username, String password){
        System.out.println("username = " + username);
        System.out.println("password = " + password);
        return "redirect:/success.html";
    }

    /**
     * @PostMapping ：映射post请求
     * 通过实体 Bean 接收请求参数
     * 要求 Bean的属性名以和参数名保持一致，类型兼容
     * @Valid: 对bean的属性进行参数校验
     */
    @PostMapping("/register")
    public String userRegister(@Valid UserInfo userInfo){
        System.out.println("userInfo = " + userInfo);
        return "redirect:/success.html";
    }

    /**
     * @GetMapping ：映射get请求
     * 从请求路劲中解析请求参数
     * @PathVariable
     */
    @GetMapping("/get/{num1}/{num2}")
    public String get(@PathVariable(name = "num1") String num,@PathVariable String num2){
        System.out.println("num = " + num);
        System.out.println("num2 = " + num2);
        return "redirect:/success.html";
    }

    /**
     * Spring MVC 映射请求方法的返回值：
     *  void/String/int/Object/List/Map
     *  String: 在同步请求中，此返回值表示的不是数据，是跳转的url
     *      url跳转：redirect、forward，默认不写关键字就是转发
     */

    @GetMapping("/index")
    public String index(){
        //转发
        return "forward:toIndex";
    }


    @GetMapping("/toIndex")
    public String toIndex(){
        //重定向
        return "redirect:/index.html";
    }



}
